home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 1.iso / dist / fw_enscript.idb / usr / freeware / share / enscript / hl / rfc.st.z / rfc.st
Encoding:
Text File  |  2002-04-08  |  1.5 KB  |  56 lines

  1. /**
  2.  * Name: rfc
  3.  * Description: RFC and Internet Draft reformatter.
  4.  *
  5.  *         Some RFCs and Internet Drafts are broken in such a way
  6.  *         that there is no linefeed character separating the
  7.  *         pages.  These documents are really pain to print
  8.  *         because you have to know the exact page height.  The
  9.  *         `rfc' highlighting state fixes these broken documents
  10.  *         by removing all unnecessary blank lines from the page
  11.  *         breaks and by separating the pages with a formfeed
  12.  *         character.  This style also highlights the MUST, MUST
  13.  *         NOT, REQUIRED SHALL, SHALL NOT, SHOULD, SHOULD NOT,
  14.  *         RECOMMENDED, MAY, and OPTIONAL keywords, described by
  15.  *         the RFC 2119.
  16.  *
  17.  * Author: Markku Rossi <mtr@iki.fi>
  18.  */
  19.  
  20. state rfc_page_separator_garbage extends Highlight
  21. {
  22.   /^[ \t\f\r]*\n/ {
  23.     /* Skip all whitespace lines. */
  24.   }
  25.   /./ {
  26.     /* Print the correct separator line. */
  27.     language_print("\f\n");
  28.     language_print($0);
  29.     return;
  30.   }
  31. }
  32.  
  33. state rfc extends HighlightEntry
  34. {
  35.   /* Find the page separators and skip all whitespace lines after that. */
  36.   /\[[Pp]age[ \t]+[0-9]+[ \t]*\]\n/ {
  37.     language_print($0);
  38.     call(rfc_page_separator_garbage);
  39.   }
  40.   /* Highlight the keywords, described by the RFC 2119.
  41.      (build-re '(MUST NOT REQUIRED SHALL SHOULD RECOMMENDED MAY OPTIONAL))
  42.    */
  43.   /\b(M(AY|UST)|NOT|OPTIONAL|RE(COMMENDED|QUIRED)|SH(ALL|OULD))\b/ {
  44.     highlight_face(true);
  45.     language_print($0);
  46.     highlight_face(false);
  47.   }
  48. }
  49.  
  50.  
  51. /*
  52. Local variables:
  53. mode: c
  54. End:
  55. */
  56.